home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / bccapp.zip / BATCH.H < prev    next >
C/C++ Source or Header  |  1991-09-15  |  2KB  |  103 lines

  1. /*
  2.  *
  3.  * Generic Add/Edit Batch system
  4.  *
  5.  * (C) 1990 Vision Software
  6.  *
  7.  * $Id: batch.h 1.2002 91/05/03 17:39:23 pcalvin beta $
  8.  *
  9.  * Comments:
  10.  *
  11.  * This class provides batch edit services.  The user my edit records
  12.  * in a structure as desired.  In addition, we now provide deleting
  13.  * of records.
  14.  *
  15.  * Bugs:
  16.  *
  17.  *    None documented
  18.  *
  19.  */
  20. #if (!defined(__BATCH__))
  21. #define __BATCH__
  22.  
  23. #if (!defined(__EDIT__))
  24. #include <edit.h>
  25. #endif
  26.  
  27. #if (!defined(__DATABASE__))
  28. #include <dbase.h>
  29. #endif
  30.  
  31. #if (!defined(__MENU__))
  32. #include <menu.h>
  33. #endif
  34.  
  35. /*
  36.  * Multiple index support.
  37.  */
  38. struct MI
  39.     {
  40.     CID cid;                                            // Index identifier
  41.     SZ szIndex;                                        // Edit index here.
  42.     SZ sz;                                            // Put index here
  43.     CCH cch;                                            // Sizeof index entry
  44.     ROW row;
  45.     COL col;                                            // Where to place scroll box
  46.     };
  47.     
  48. typedef struct MI *PMI;
  49. STATIC CONST PMI pmiNil = Nil;
  50.  
  51. typedef INT CMI;
  52. STATIC CONST CMI cmiNil = Nil;
  53. STATIC CONST CMI cmiOpenMax = cidOpenMax;
  54.  
  55. /*
  56.  *    Function types for Read/Write of records.
  57.  *
  58.  *    Prototype: VOID pfn(DBASE *)
  59.  */
  60. typedef VOID (*FNPDB)(DBASE *);
  61.  
  62. /*
  63.  * Batch field editing.  Automatically saves/reads new records
  64.  * when given an index field
  65.  */
  66. class BATCH : public EDIT
  67.     {
  68. public:
  69.     BATCH(DBASE *pdb,CCH cch,SZ szFile,SZ szTitle = szNil,FNPDB pfnRead = Nil, FNPDB pfnWrite = Nil);
  70.     BATCH(DATABASE &rdtbOriginal,SZ szTitle = szNil,FNPDB pfnRead = Nil, FNPDB pfnWrite = Nil);
  71.     ~BATCH();
  72.     VOID Read();
  73.     VOID Index(ROW row,COL col,SZ szFile,SZ szMsg,SZ sz,CHAR chPic,CCH cch,SZ szHelp = "",SZ szDefault = szNil);
  74.     VOID Index(ROW row,COL col,CID cid,SZ szMsg,CHAR chPic,SZ szHelp = "",SZ szDefault = szNil);
  75.     VOID IndexSelector(ROW row,COL col,SZ szMsg,CENT cent,PENT pent,CENT centDefault = centNil);
  76. private:
  77.     STATIC BOOL FChange(SZ sz,VOID *pvThis);
  78.     STATIC BOOL FSelect(SZ sz,VOID *pvThis);
  79.     BOOL FCreateIndex(SZ szIndex,CID cid,PED ped);
  80.     BOOL FHandleCd(CD cd);
  81.     BOOL FExit();
  82.     BOOL FSelectCmi(CMI cmi);
  83.     INLINE VOID PrepRecForRead();
  84.     INLINE VOID PrepRecForWrite();
  85.     VOID SaveIndexes();
  86.     VOID RestoreIndexes();
  87.     VOID MaybeSaveCurrent();
  88.     BOOL fCreateRecord;
  89.     BOOL fDeleteDatabase;
  90.     DATABASE *pdtb;
  91.     MI rgmiActive[cmiOpenMax];
  92.     PMI pmiCurrent;
  93.     CMI cmiMac;
  94.     CENT centIndex;
  95.     PENT pentIndex;
  96.     PED pedIndex;
  97.     FNPDB pfnRead;
  98.     FNPDB pfnWrite;
  99.     SZTEMP szSelector;
  100.     };
  101.  
  102. #endif    /* !defined(__BATCH__) */
  103.